package com.ash.mapper.user;
import com.ash.domain.User;
import com.ash.domain.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.lang.Nullable;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author : Chen Chao
 * @encoding : UTF-8
 * @date : 2021/3/20 12:03
 * @file : project06.com.ash.mapper.user.UserMapper.java
 * @software : IntelliJ IDEA
 * @since : 1.8
 */
public interface UserMapper {
    /**
     * 分页查询所有数据
     * @param startIndex 页数
     * @param limit 每页数量
     * @return 当前页的用户列表
     */
    List<UserVo> selectAll(@Nullable @Param("uname") String uname, @Param("startIndex") Integer startIndex, @Param("limit") Integer limit);
    /**
     * 查询用户
     * @param user 要查询的user
     * @return 查询的user
     */
    User selectToLogin(User user);
    /**
     *注册时用户名查重
     * @param  uname 要查询的用户名
     * @return 查询的用户
     */
    User selectNameToRegister(String uname);
    /**
     *注册用户
     * @param user 注册的用户
     * @return 注册结果
     */
    int addToRegister(User user);
    /**
     * 根据uid进行删除操作
     * @param uid 用户id
     * @return 受影响行数
     */
    int delete(int uid);
    /**
     * 根据id进行批量删除
     * @param ids 要删除的ids
     * @return 返回受影响行数
     */
    int deleteByIds(@Param("ids") List<Integer> ids);
    /**
     * 分页查询数据的数量
     * @param uname 模糊查询的用户名
     * @return 当前页的用户列表
     */
    int dataCount(@Nullable @Param("uname") String uname);



    /**
     * 更新用户信息
     * @param entries 对象信息map的entries
     * @param  uid 用户id
     * @return 受影响的行数
     */
    int update(@Param("entries") Set<Map.Entry<String, Object>> entries,@Param("uid") Integer uid);

    /**
     * 根据id查询用户信息
     * @param uid uid
     * @return 返回用户信息封装的对象
     */
    User selectById(Integer uid);
}
